﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.Data;

namespace CMD.BAL.CAT
{
    [DataContractAttribute]
    public class EstructuraGeografica
    {
        [DataMemberAttribute(EmitDefaultValue = false)]
        public List<EstructuraGeografica> listTerritorio;
        [DataMemberAttribute(EmitDefaultValue = false)]
        public string idTerritorio;
        [DataMemberAttribute(EmitDefaultValue = false)]
        public string dscTerritorio;
        [DataMemberAttribute(EmitDefaultValue = false)]
        public string idGerencia;
        [DataMemberAttribute(EmitDefaultValue = false)]
        public string dscGerencia;
        [DataMemberAttribute(EmitDefaultValue = false)]
        public string idSubDireccion;
        [DataMemberAttribute(EmitDefaultValue = false)]
        public string dscSubDireccion;
        
        public static DataTable GetData()
        {
            DataTable dt;
            //ejecutar store
            dt = CMD_WEB.DAL.SrvDB.ExecuteQuery("exec SP_CMD_CAT_SEL_ESTRUCTURA_TERRITORIO");
            return dt;
        }
        public static DataTable GetDataId(string idTerritorio)
        {
            DataTable dt;
            //ejecutar store
            dt = CMD_WEB.DAL.SrvDB.ExecuteQuery("exec SP_CMD_CAT_SEL_ESTRUCTURA_GEO_TERRITORIO'" + idTerritorio + "'");
            return dt;
        }
        public static List<EstructuraGeografica> GetDataEstructuraGeografica()
        {
            try
            {
                DataTable dt;
                dt = EstructuraGeografica.GetData();
                if (dt.Rows.Count == 0)
                {
                    return null;
                }
                else
                {
                    List<EstructuraGeografica> list = dt.AsEnumerable().Select(
                    row => new EstructuraGeografica
                    {
                        idTerritorio = String.IsNullOrEmpty(row.Field<Guid>("idTerritorio").ToString())
                        ? ""
                        : row.Field<Guid>("idTerritorio").ToString(),
                        dscTerritorio = String.IsNullOrEmpty(row.Field<string>("descTerritorio"))
                        ? ""
                        : row.Field<string>("descTerritorio"),
                    }
                    ).ToList();
                    return list;
                }
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }
        public static EstructuraGeografica GetDataEstructuraGeograficaTerritorio(string idTerritorio)
        {
            try
            {
                EstructuraGeografica eg;
                DataTable dt = EstructuraGeografica.GetDataId(idTerritorio);
                if (dt.Rows.Count == 0)
                {
                    return null;
                }
                else if (idTerritorio == "")
                {
                    return null;
                }
                else
                {
                    eg = new EstructuraGeografica(null, Convert.ToString(dt.Rows[0]["IdGerencia"]), Convert.ToString(dt.Rows[0]["descGerencia"]), Convert.ToString(dt.Rows[0]["IdSubDireccion"]), Convert.ToString(dt.Rows[0]["descSubDireccion"]));
                }
                return eg;
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }
        public EstructuraGeografica()
        {
            listTerritorio = null;
            idGerencia="";
            dscGerencia="";
            idSubDireccion="";
            dscSubDireccion="";
        }
        public EstructuraGeografica(List<EstructuraGeografica> listTerritorio, string idGerencia, string dscGerencia, string idSubDireccion, string dscSubDireccion)
        {
            this.listTerritorio = listTerritorio;
            this.idGerencia = idGerencia;
            this.dscGerencia = dscGerencia;
            this.idSubDireccion = idSubDireccion;
            this.dscSubDireccion = dscSubDireccion;
        }
    }
}
